package lc.weekly;

/**
 * 第 291 场周赛
 * <p>
 * 本场竞赛由「 FunPlus & 力扣」联合主办
 * <p>
 * <a href="https://leetcode-cn.com/contest/weekly-contest-291">https://leetcode-cn.com/contest/weekly-contest-291</a>
 */
public interface WeeklyContest291 {

    /**
     * 6047. 移除指定数字得到的最大结果
     * <p>
     * <p>
     * 给你一个表示某个正整数的字符串 number 和一个字符 digit 。
     * <p>
     * 从 number 中 恰好 移除 一个 等于 digit 的字符后，找出并返回按 十进制 表示 最大 的结果字符串。生成的测试用例满足 digit 在 number 中出现至少一次。
     * <p>
     * 提示：
     * <ul>
     *     <li>2 <= number.length <= 100</li>
     *     <li>number 由数字 '1' 到 '9' 组成</li>
     *     <li>digit 是 '1' 到 '9' 中的一个数字</li>
     *     <li>digit 在 number 中出现至少一次</li>
     * </ul>
     *
     * @param number
     * @param digit
     * @return
     */
    String removeDigit(String number, char digit);

    /**
     * 6048. 必须拿起的最小连续卡牌数
     * <p>
     * <p>
     * 给你一个整数数组 cards ，其中 cards[i] 表示第 i 张卡牌的 值 。如果两张卡牌的值相同，则认为这一对卡牌 匹配 。
     * <p>
     * 返回你必须拿起的最小连续卡牌数，以使在拿起的卡牌中有一对匹配的卡牌。如果无法得到一对匹配的卡牌，返回 -1 。
     * <p>
     * 提示：
     * <ul>
     *     <li>1 <= cards.length <= 10<sup>5</sup></li>
     *     <li>0 <= cards[i] <= 10<sup>6</sup></li>
     * </ul>
     *
     * @param cards
     * @return
     */
    int minimumCardPickup(int[] cards);

    /**
     * 6049. 含最多 K 个可整除元素的子数组
     * <p>
     * <p>
     * 给你一个整数数组 nums 和两个整数 k 和 p ，找出并返回满足要求的不同的子数组数，要求子数组中最多 k 个可被 p 整除的元素。
     * <p>
     * 如果满足下述条件之一，则认为数组 nums1 和 nums2 是 不同 数组：
     * <ul>
     *     <li>两数组长度<b>不同</b> ，或者</li>
     *     <li>存在 <b>至少</b> 一个下标 i 满足 nums1[i] != nums2[i] 。</li>
     * </ul>
     * <b>子数组</b> 定义为：数组中的连续元素组成的一个 非空 序列。
     * <br />
     * <br />
     * 提示：
     * <ul>
     *     <li>1 <= nums.length <= 200</li>
     *     <li>1 <= nums[i], p <= 200</li>
     *     <li>1 <= k <= nums.length</li>
     * </ul>
     *
     * @param nums 1 <= nums.length <= 200 1 <= nums[i] <= 200
     * @param k    1 <= k <= nums.length
     * @param p    1 <= p <= 200
     * @return
     */
    int countDistinct(int[] nums, int k, int p);

    /**
     * 6050. 字符串的总引力
     * <p>
     * <p>
     * 字符串的 引力 定义为：字符串中 不同 字符的数量。
     * <ul>
     *     <li>例如，"abbca" 的引力为 3 ，因为其中有 3 个不同字符 'a'、'b' 和 'c' 。</li>
     * </ul>
     * <p>
     * 给你一个字符串 s ，返回 其所有子字符串的总引力 。
     * <p>
     * 子字符串 定义为：字符串中的一个连续字符序列。
     * <br />
     * <br />
     * <b>提示：</b>
     * <ul>
     *     <li>1 <= s.length <= 10<sup>5</sup></li>
     *     <li>s 由小写英文字母组成</li>
     * </ul>
     *
     * @param s
     * @return
     */
    long appealSum(String s);
}
